#include "Plan.h"


Plan::Plan() {}

Plan::Plan(float a1, float b1, float c1, float d1) {
	a = a1;
	b = b1;
	c = c1;
	d = d1;
}

Plan::~Plan() {}

Intersection * Plan::intersection(const Rayon &r) {
	Intersection * i = NULL;
	Vecteur normalPlan = Vecteur(a,b,c);
	normalPlan.normaliser();
	float vd = normalPlan.prodScal(r.getDirection());
	float t = -(a*r.getOrigine().getX() + b*r.getOrigine().getY() + c*r.getOrigine().getZ() + d)/vd;
	if(t>0.0 && vd<0.0){
		//Point intersection
		i = new Intersection();
		Point m = Point(r.getOrigine().getX()+r.getDirection().getX()*t, r.getOrigine().getY()+r.getDirection().getY()*t, r.getOrigine().getZ()+r.getDirection().getZ()*t);
		i->setPoint(m);
		i->setDistance(t);
		i->setNormale(normalPlan);
		i->setObjet(this);
	}
	return i;

}